package com.code260.ss.spring3mybatis.demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

	public static void main(String[] args) {
		test("\\{[^/]+?\\}", "{/a}{ac}"); // 共找到 1 处匹配 {ac}
		System.out.println("===end 1===");

		test("\\{[^/]\\}", "{/a}{ac}"); // （没有匹配）
		System.out.println("===end 2===");

		test("[^/{}]", "a/bc{xy}z"); // 匹配出不包含 / { } 这三个字符外的其他所有字符 **有一个字符就命中一次**
		System.out.println("===end 3===");

		test("(abc)industr(y|ies)(xyz)", "abcindustryxyz"); // industry中的y会被命中也会被groupcount计数
		System.out.println("===end 4===");

		test("(abc)industr(?:y|ies)(xyz)", "abcindustryxyz"); // industry中的y会被命中但不会被groupcount计数，也group不出来
		System.out.println("===end 5===");
		
		test("industr(?:y|ies)", "abcindustryxyz"); //
		System.out.println("===end 6===");
		
		test("industr(y|ies)", "abcindustryxyz"); //
		System.out.println("===end 7===");
	}

	private static void test(String reg, String inputStr) {
		Pattern regPattern = Pattern.compile(reg);
		Matcher m = regPattern.matcher(inputStr);
		int end = 0;
		while (m.find()) {
			System.out.println("Matched");
			int groupCount = m.groupCount();
			for (int i = 0; i <= groupCount; i++) {
				String match = m.group(i);
				end = m.end();
				System.out.println("Group " + i + ":" + match + ", end is " + end);
			}
		}
	}
}
